/** 
 * 项目名:shiro 
 * 文件名:PermissionDaoImpl.java 
 * 包名:com.spring.shiro.dao.impl 
 * 创建日期:2015年2月13日上午10:56:45 
 * 版权(c): ZTESOFT TECHNOLOGY CO.,LTD.Copyright 2012-2030.All rights reserved
 * 
*/  
  
package com.spring.shiro.dao.impl;  

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.support.GeneratedKeyHolder;

import com.spring.shiro.dao.IPermissionDao;
import com.spring.shiro.po.Permission;
import com.spring.shiro.utils.JdbcTemplateUtils;
 
public class PermissionDaoImpl implements IPermissionDao {

	private JdbcTemplate jdbcTemplate = JdbcTemplateUtils.jdbcTemplate();
	
	@Override
	public Permission createPermission(final Permission permission) {
		
		final String sql = "insert into sys_permissions(permission, description, available) values(?,?,?)";
		
		GeneratedKeyHolder keyHolder = new GeneratedKeyHolder();
		jdbcTemplate.update(new PreparedStatementCreator() {
			
			@Override
			public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
				
				PreparedStatement psst = connection.prepareStatement(sql,  new String[] { "id" });
                psst.setString(1, permission.getPermission());
                psst.setString(2, permission.getDescription());
                psst.setBoolean(3, permission.getAvailable());
                return psst;
			}
		}, keyHolder);
		
		permission.setId(keyHolder.getKey().longValue());
		
		return permission;
	}

	@Override
	public void deletePermission(Long permissionId) {
		
		//首先把与permission关联的相关表的数据删掉
		String sql = "delete from sys_roles_permissions where permission_id=?";
        jdbcTemplate.update(sql, permissionId);
        
        sql = "delete from sys_permissions where id=?";
        jdbcTemplate.update(sql, permissionId);
	}

}
  